# -*- coding:utf-8 -*-
"""
第十三道题
有以下两个字典，请分别打印出两者的差异处(包括键和值)。
dict1 = { "pageSize": "30", "product": "EFund", "DISCOUNT": "", "SortColumn": "SYL_Y", "MobileKey": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353", "BUY": "true", "appType": "ttjj", "LevelOne": "", "version": "6.3.2", "onFundCache": "3", "Sort": "desc", "pageIndex": "1", "FundType": "6", "CompanyId": "", "plat": "Android", "TOPICAL": "", "ENDNAV": "", "LevelTwo": "", "ISABNORMAL": "true", "DataConstraintType": "0", "gToken": "ceaf-236567466abfda4e2864831ea5645231", "ESTABDATE": "6", "deviceid": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353" }
dict2 = { "version": "6.3.2", "pageSize": "30", "product": "EFund", "DISCOUNT": "", "CLTYPE": "", "SortColumn": "SYL_Y", "MobileKey": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353", "BUY": "true", "appType": "ttjj", "RISKLEVEL": "", "igggggnoreburst": "true", "RLEVEL_SZ": "5,4,3", "Sort": "desc", "pageIndex": "1", "FundType": "0", "CompanyId": "", "plat": "Android", "TOPICAL": "", "ENDNAV": "", "ISABNORMAL": "true", "DataConstraintType": "0", "gToken": "ceaf-236567466abfda4e2864831ea5645231", "ESTABDATE": "6", "deviceid": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353" }
"""


if __name__ == '__main__':
    dict1 = {
        "pageSize": "30",
        "product": "EFund",
        "DISCOUNT": "",
        "SortColumn": "SYL_Y",
        "MobileKey": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353",
        "BUY": "true",
        "appType": "ttjj",
        "LevelOne": "",
        "version": "6.3.2",
        "onFundCache": "3",
        "Sort": "desc",
        "pageIndex": "1",
        "FundType": "6",
        "CompanyId": "",
        "plat": "Android",
        "TOPICAL": "",
        "ENDNAV": "",
        "LevelTwo": "",
        "ISABNORMAL": "true",
        "DataConstraintType": "0",
        "gToken": "ceaf-236567466abfda4e2864831ea5645231",
        "ESTABDATE": "6",
        "deviceid": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353"
    }
    dict2 = {
        "version": "6.3.2",
        "pageSize": "30",
        "product": "EFund",
        "DISCOUNT": "",
        "CLTYPE": "",
        "SortColumn": "SYL_Y",
        "MobileKey": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353",
        "BUY": "true",
        "appType": "ttjj",
        "RISKLEVEL": "",
        "igggggnoreburst": "true",
        "RLEVEL_SZ": "5, 4, 3",
        "Sort": "desc",
        "pageIndex": "1",
        "FundType": "0",
        "CompanyId": "",
        "plat": "Android",
        "TOPICAL": "",
        "ENDNAV": "",
        "ISABNORMAL": "true",
        "DataConstraintType": "0",
        "gToken": "ceaf-236567466abfda4e2864831ea5645231",
        "ESTABDATE": "6",
        "deviceid": "4a69e1fc7d583fe671ad69c95ae6c2b7||945235770232353"
    }

    print('Common keys:', dict1.keys() & dict2.keys())
    print('Keys in dict1 not in dict2:', dict1.keys() - dict2.keys())
    print('Keys in dict1 or in dict2', dict1.keys() | dict2.keys())
    print('differ keys:', dict1.keys() ^ dict2.keys())

    print('(key,value) pairs in common:', dict1.items() & dict2.items())
    print('(key,value) pairs in dict1 not in dict2:', dict1.items() - dict2.items())
    print('(key,value) pairs in dict1 or in dict2:', dict1.items() | dict2.items())
    print('(key,value) pairs differ:', dict1.items() ^ dict2.items())

